/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package daos;

import beans.AfiliadoBean;
import beans.Bean;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Cristian Ketibian
 * @version 1.0
 */
public class MSSQLAfiliadoDao extends MSSQLDao implements Dao{
    
     public MSSQLAfiliadoDao() throws Exception {
        super();
    }
     
     public MSSQLAfiliadoDao(String db) throws Exception {
        super(db);
    }

    public Bean make(ResultSet result) throws Exception {       
        AfiliadoBean afiliado = new AfiliadoBean();    
        afiliado.setNroAfiliado(result.getInt("nro_afiliado"));
        afiliado.setNombre(result.getString("nombre"));   
        afiliado.setApellido(result.getString("apellido"));  
        afiliado.setFechaNacimiento(result.getDate("fecha_nacimiento"));
        afiliado.setNroDocumento(result.getInt("nro_doc"));
//        afiliado.setTipoDocumento(result.getString("tipo_doc"));
//        afiliado.setCalle(result.getString("calle"));
//        afiliado.setNumero(result.getString("numero"));
//        afiliado.setPiso(result.getString("piso"));
//        afiliado.setDepto(result.getString("depto"));
//        afiliado.setBarrio(result.getString("nombre_barrio"));
//        afiliado.setCiudad(result.getString("nombre_ciudad"));
//        afiliado.setProvincia(result.getString("nombre_provincia"));
//        afiliado.setPais(result.getString("pais"));
//        afiliado.setSexo(result.getString("sexo")); 
        afiliado.setTelefono(result.getString("telefono"));
      
        return afiliado;       
    
    }
    
    
    
//    public BeanSerializable make1(ResultSet result) throws Exception {
//          
//        AfiliadoSerializable afiliado = new AfiliadoSerializable();    
//        afiliado.setNroAfiliado(result.getInt("nro_afiliado"));
//        afiliado.setNombre(result.getString("nombre"));   
//        afiliado.setApellido(result.getString("apellido"));  
//       
//        return afiliado;       
//    
//    }

   public int insert(Bean bean) throws Exception {
       throw new UnsupportedOperationException("Not supported yet.");
    }

    public void update(Bean bean) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void delete(Bean bean) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<Bean> select(Bean bean) throws Exception {
        ResultSet result;
        
        List<Bean> lista = new ArrayList<Bean>();
        this.setStatement("get_afiliados"); // agregar el parametro al procedimiento
        result = this.getStatement().executeQuery();       
        while (result.next()) {
           lista.add(this.make(result));
        }
        return lista;
    }

    public boolean valid(Bean bean) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

   
    public Bean get(Bean bean) throws Exception {
       
        try{            
            if(((AfiliadoBean) bean).getNroAfiliado()!=0){                 
                this.setStatement("get_idAfiliado(?)");
                this.getStatement().setLong(1, ((AfiliadoBean) bean).getNroAfiliado());                
            }
            else{
                this.setStatement("get_docAfiliado(?,?,?)");
                 this.getStatement().setInt(1, ((AfiliadoBean) bean).getNroDocumento());                  
                 this.getStatement().setDate(2, new java.sql.Date(((AfiliadoBean) bean).getFechaNacimiento().getTime()));   
                 this.getStatement().setString(3, ((AfiliadoBean) bean).getTipoDocumento());                 
            }
            ResultSet result = this.getStatement().executeQuery();      
            result.next();              
            bean = make(result);                 
        } catch (SQLException ex) {            
            return null;
        } catch (Exception ex2) { throw ex2; }  
        finally { this.destroy(); }
        return bean;
    }  
    

    @Override
    public long getSize(Bean bean) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

//    @Override
//    public List<BeanSerializable> select1(Bean bean) throws Exception {
//        ResultSet result;
//        
//        List<BeanSerializable> lista = new ArrayList<BeanSerializable>();
//        this.setStatement("get_afiliados"); // agregar el parametro al procedimiento
//        result = this.getStatement().executeQuery();       
//        while (result.next()) {
//           lista.add(this.make1(result));
//        }
//        return lista;
//    }

  

}
